<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page import="com.esurvey.core.*" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.sql.Date" %>
<HTML>
<HEAD>
	<TITLE>eSurvey - Vista de las encuestas p&uacute;blicas</TITLE>
	<LINK href="styles/general.css" type="text/css" rel="stylesheet">
	<LINK href="styles/visitorViewSurveys.css" type="text/css" rel="stylesheet">
	<SCRIPT src="jquery/jquery.js" type="text/javascript"></SCRIPT>
	<SCRIPT src="js/global.js" type="text/javascript"></SCRIPT>
	<SCRIPT type="text/javascript">
		/**
		  * ESPECIFICACIÓN: Función que muestra, con un mensaje junto al checkbox correspondiente,
		  * si éste está seleccionado o no
		  **/
		function showStatePublic() {
			if (document.getElementById("public").checked) {
				document.getElementById("publicSelec").innerHTML = "S&iacute;";
			} else {
				document.getElementById("publicSelec").innerHTML = "No";
			}
		}

		/**
		  * ESPECIFICACIÓN: Función que muestra, con un mensaje junto al checkbox correspondiente,
		  * si éste está seleccionado o no
		  **/
		function showStateAnonymous() {
			if (document.getElementById("anonymous").checked) {
				document.getElementById("anonymousSelec").innerHTML = "S&iacute;";
			} else {
				document.getElementById("anonymousSelec").innerHTML = "No";
			}
		}
		/**
		  * ESPECIFICACIÓN: Función que carga la encuesta pulsada llamando a la página correspondiente
		  * pasándole como parámetro el id correspondiente de la encuesta
		  **/
		function visitorViewSurvey(idSurvey) {
			window.location="visitorViewSurvey.jsp?idSurvey="+idSurvey;
		}
	</SCRIPT>
</HEAD>
<%
if ((session.getAttribute("visitor") != null) && (request.getParameter("surveyKind") != null) && (request.getParameter("surveyKind") != null) && (request.getParameter("category") != null))  {
	//comprobamos el valor para el tipo de encuesta recibido como parámetro sea uno de los valores válidos
	//(en caso de haber recibido algun parámetro)
	int surveyKindSelected = 0;
	if (((String) request.getParameter("surveyKind")).equals("publica")) {
		surveyKindSelected = 1;
	} else if (((String) request.getParameter("surveyKind")).equals("privada")) {
		surveyKindSelected = 2;
	}
	//comprobamos el valor para el tipo de encuesta recibido como parámetro sea uno de los valores válidos
	//(en caso de haber recibido algun parámetro)
	int anonymousSelected = 0;
	if (((String) request.getParameter("anonymous")).equals("si")) {
		anonymousSelected = 1;
	} else if (((String) request.getParameter("anonymous")).equals("no")) {
		anonymousSelected = 2;
	}
	//obtenemos la categoría seleccionada
	Category category = eSurveyPersistence.loadCategory(request.getParameter("category"));
	//comprobamos que, tanto el tipo de encuesta como el anónimato requeridos recibidos como parámetro, sean
	//valores válidos
	if ((surveyKindSelected != 0) && (anonymousSelected != 0) && (category != null)) {
		//obtenemos la fecha actual
		java.util.Calendar fechaActualCalendar = new java.util.GregorianCalendar();
		long fechaActualMilisegundos = fechaActualCalendar.getTimeInMillis();
		Date fechaActual = new Date(fechaActualMilisegundos);
		try {
			//cargamos todos las encuestas existentes actualmente según el tipo seleccionado
			//y el anónimato requerido
			ArrayList<Survey> surveys = new ArrayList<Survey>();
			if (surveyKindSelected == 1) {
				if (anonymousSelected == 1) {
					surveys = eSurveyPersistence.loadPublicSurveys(fechaActual, true, category);
				} else if (anonymousSelected == 2) {
					surveys = eSurveyPersistence.loadPublicSurveys(fechaActual, false, category);
				}
			} else if (surveyKindSelected == 2) {
				if (anonymousSelected == 1) {
					surveys = eSurveyPersistence.loadPrivateSurveys(fechaActual, true, category);
				} else if (anonymousSelected == 2) {
					surveys = eSurveyPersistence.loadPrivateSurveys(fechaActual, false, category);
				}
			}
%>
	<BODY>
		<DIV id="general">
			<DIV id="header">
				<%@ include file="header.jsp" %>
			</DIV>
			<DIV id="content">
				<DIV id="main">
					<H1>Men&uacute; de consultas de encuestas</H1>
					<DIV>
						<H2>Encuestas abiertas que se ajustan a la selecci&oacute;n:</H2>
						<DIV id="searchSelected">
							<FORM method="POST" action="visitorViewSurveysResults.jsp">
								<LABEL id="lblSurveyKind" class="label" for="surveyKind">Tipo de encuesta</LABEL>
								<SELECT id="surveyKind" name="surveyKind" class="select" tabindex="1">
								<%
									//asignamos el último valor seleccionado
									if (surveyKindSelected == 1) {
										out.println("<OPTION selected>publica</OPTION>");
										out.println("<OPTION>privada</OPTION>");
									} else if (surveyKindSelected == 2) {
										out.println("<OPTION>publica</OPTION>");
										out.println("<OPTION selected>privada</OPTION>");
									}
								%>
								</SELECT>
								<LABEL id="lblAnonymous" class="label" for="anonymous">An&oacute;nima:</LABEL>
								<SELECT id="anonymous" name="anonymous" class="select" tabindex="2">
								<%
									//asignamos el último valor seleccionado
									if (anonymousSelected == 1) {
										out.println("<OPTION selected>si</OPTION>");
										out.println("<OPTION>no</OPTION>");
									} else if (anonymousSelected == 2) {
										out.println("<OPTION>si</OPTION>");
										out.println("<OPTION selected>no</OPTION>");
									}
								%>
								</SELECT>
								<LABEL id="lblCategory" class="label" for="category">Categor&iacute;a:</LABEL>
								<SELECT id="category" name="category" class="select" tabindex="3">
									<%
										ArrayList<Category> categories = eSurveyPersistence.loadCategories();
										for (Category c: categories) {
											if (c.getName().equals(category.getName())) {
												out.println("<OPTION selected>" + c.getName() + "</OPTION>");
											} else {
												out.println("<OPTION>" + c.getName() + "</OPTION>");
											}
										}
									%>
								</SELECT>
								<INPUT type="submit" class="button" value="FILTRAR ENCUESTAS" tabindex="4">
							</FORM>
						</DIV>
						<DIV id="resultsSurveysTable">
							<FIELDSET class="fieldset"><LEGEND class="fieldsetTitle">Encuestas disponibles</LEGEND>
								<TABLE class="resultsSurveysTable">
									<TR class="headerTable">
										<TH>Autor</TH>
										<TH>Asunto</TH>
										<TH>Encuestados</TH>
										<TH>Fecha de vencimiento</TH>
									</TR>
									<%
										//cargamos las diferentes encuestas en la tabla correspondiente, comprobando que cada una
										//de ellas no haya llegado a su fecha límite
										for (Survey s: surveys) {
											//cargamos los datos del visitante
											Visitor v = eSurveyPersistence.loadVisitor(session.getAttribute("visitor").toString());

											//si la encuesta es privada, comprobamos que el usuario tenga acceso
											boolean ok = true;
											if (surveyKindSelected == 2) {
												ok = eSurveyPersistence.isUserHasAcces(v.getId(), s.getId());
											}
											if (ok) {
												//Comprobamos que la encuesta actual no haya sido respondida por el usuario  
												int idSurvey = s.getId();
												if (! eSurveyPersistence.surveyIsResponsed(idSurvey, v.getId())) {
													out.println("<TR class='noHeader'>");

													//Cargamos los datos del propietario de la encuesta actual
													User u = eSurveyPersistence.loadUser(s.getIdOwner());
													out.println("<TD onclick='visitorViewSurvey("+idSurvey+")' title='Responder encuesta'>"+u.getLogin()+"</TD>");

													out.println("<TD onclick='visitorViewSurvey("+idSurvey+")' title='Responder encuesta'>"+s.getSubject()+"</TD>");

													out.println("<TD onclick='visitorViewSurvey("+idSurvey+")' title='Responder encuesta'>"+eSurveyPersistence.numberUsersResponsed(idSurvey)+"</TD>");

													out.println("<TD onclick='visitorViewSurvey("+idSurvey+")' title='Responder encuesta'>"+s.getDueDateToString()+"</TD>");

													out.println("</TR>");
												}
											}
										}
									%>
								</TABLE>
							</FIELDSET>
						</DIV>
						<DIV id="resultsSurveysTable">
							<FIELDSET class="fieldset"><LEGEND class="fieldsetTitle">Encuestas respondidas</LEGEND>
								<TABLE class="resultsSurveysTable">
									<TR class="headerTable">
										<TH>Autor</TH>
										<TH>Asunto</TH>
										<TH>Encuestados</TH>
										<TH>Fecha de vencimiento</TH>
										<TH>Fecha de respuesta</TH>
									</TR>
									<%
										//cargamos las diferentes encuestas en la tabla correspondiente, comprobando que cada una
										//de ellas no haya llegado a su fecha límite
										for (Survey s: surveys) {
											//cargamos los datos del visitante
											Visitor v = eSurveyPersistence.loadVisitor(session.getAttribute("visitor").toString());

											//Comprobamos que la encuesta actual no haya sido respondida por el usuario  
											int idSurvey = s.getId();
											if (eSurveyPersistence.surveyIsResponsed(idSurvey, v.getId())) {
												out.println("<TR>");

												//Cargamos los datos del propietario de la encuesta actual
												User u = eSurveyPersistence.loadUser(s.getIdOwner());
												out.println("<TD>"+u.getLogin()+"</TD>");

												out.println("<TD>"+s.getSubject()+"</TD>");

												out.println("<TD>"+eSurveyPersistence.numberUsersResponsed(idSurvey)+"</TD>");

												out.println("<TD>"+s.getDueDateToString()+"</TD>");

												out.println("<TD>"+eSurveyPersistence.getResponsedDate(idSurvey, v.getId())+"</TD>");

												out.println("</TR>");
											}
										}
									%>
								</TABLE>
							</FIELDSET>
						</DIV>
					</DIV>
				</DIV>
				<DIV id="nav">
					<DIV class="tabs">
						<%@ include file="visitorTabs.html" %>
					</DIV>
				</DIV>
			</DIV>
			<DIV id="footer">
				<%@ include file="footer.jsp" %>
			</DIV>
		</DIV>
	</BODY>
<%
		} catch (Exception e) {
			response.sendRedirect("error.jsp?exception="+e);
		}
	} else {
		response.sendRedirect("visitorViewSurveys.jsp");
	}
} else {
	response.sendRedirect("loginCert.jsp");
}
%>
</HTML>

